package com.jishuo.pzk.service;

import com.google.gson.Gson;
import com.jishuo.base.config.PzkConfig;
import com.jishuo.pzk.bean.base.VouFieldVO;
import com.jishuo.pzk.bean.base.VoucherDetailVO;
import com.jishuo.pzk.bean.base.VoucherVO;
import com.jishuo.pzk.bean.bill.IllegalActivityScaleInfoDetail;
import com.jishuo.pzk.bean.bill.IllegalactivityScaleinfoVO;
import com.jishuo.pzk.util.IdWorker;
import com.jishuo.pzk.util.ImageUtils;
import com.jishuo.pzk.util.VoucherUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 交管二八分成
 */
@Service
public class IllegalActivityScaleInfoService {
    private static final String vocde = PzkConfig.Vocode_Cross;
    private static final int busitype = PzkConfig.Pztype_Cross;//凭证类型

    @Resource
    private VoucherService voucherService;

    @Resource
    private VoucherUtil voucherUtil;

    /**
     * 存储凭证数据
     * @param data 报文
     * @return
     */
    public int savePzk(String data) {
        ArrayList<IllegalActivityScaleInfoDetail> dtos = new Gson().fromJson(data, IllegalactivityScaleinfoVO.class).getDetail();
        for (IllegalActivityScaleInfoDetail sacle : dtos) {
            VoucherVO voucher = voucherUtil.getVoucher(busitype, "0", vocde, sacle.getBillNum(), "0", "2", sacle.getCollectCantonId(), sacle.getBankId(), "0", sacle.getBankStation(), sacle.getPayBankDt(), new Gson().toJson(sacle));
            voucherService.saveVoucher(voucher);
        }
        return 1;
    }

    /**
     * 获得凭证字段明细
     * @param list 字段定义
     * @param vo 凭证对象
     * @return 凭证细表
     */
    public static List<VoucherDetailVO> getDetail(List<VouFieldVO> list, VoucherVO vo) {
        String voucher = vo.getVoucher();
        IllegalActivityScaleInfoDetail sacle = new Gson().fromJson(voucher, IllegalActivityScaleInfoDetail.class);
        List<VoucherDetailVO> listDe = new ArrayList<>();
        for (VouFieldVO vouFieldVO : list) {
            int x;
            int y;
            String pos = "";

            if ("left".equals(vouFieldVO.getHalign()) || vouFieldVO.getHalign() == null) {
                pos = vouFieldVO.getFieldPosLeft();

            } else if ("right".equals(vouFieldVO.getHalign())) {
                pos = vouFieldVO.getFieldPosRight();

            } else if ("center".equals(vouFieldVO.getHalign())) {
                pos = vouFieldVO.getFieldPosLeft();
            }

            if (vouFieldVO.getField() != null) {
                if (vouFieldVO.getField().trim().equals("payeraccountname")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    x = Integer.parseInt(pos.split(",")[0]);
                    y = Integer.parseInt(pos.split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("payeraccountname");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getPayerAccountName());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }
                if (vouFieldVO.getField().trim().equals("payeraccount")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    x = Integer.parseInt(pos.split(",")[0]);
                    y = Integer.parseInt(pos.split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("payeraccount");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getPayerAccount());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }
                if (vouFieldVO.getField().trim().equals("payerbankaccount")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    x = Integer.parseInt(pos.split(",")[0]);
                    y = Integer.parseInt(pos.split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("payerbankaccount");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getPayerBankName());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }

                if (vouFieldVO.getField().trim().equals("billsn")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    x = Integer.parseInt(pos.split(",")[0]);
                    y = Integer.parseInt(pos.split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("billsn");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getBillNum());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }

                if (vouFieldVO.getField().trim().equals("parentadmdiv")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    String[] posId = pos.split("\\|");
                    x = Integer.parseInt(posId[0].split(",")[0]);
                    y = Integer.parseInt(posId[0].split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("parentadmdiv");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getParentAdmdiv());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }

                if (vouFieldVO.getField().trim().equals("parentadmdivname")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    String[] posId = pos.split("\\|");
                    x = Integer.parseInt(posId[0].split(",")[0]);
                    y = Integer.parseInt(posId[0].split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("parentadmdivname");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getParentAdmdivName());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }
                if (vouFieldVO.getField().trim().equals("payeeaccountname")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    String[] posId = pos.split("\\|");
                    x = Integer.parseInt(posId[0].split(",")[0]);
                    y = Integer.parseInt(posId[0].split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("payeeaccountname");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getPayeeAccountName());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }
                if (vouFieldVO.getField().trim().equals("payeeaccount")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    String[] posId = pos.split("\\|");
                    x = Integer.parseInt(posId[0].split(",")[0]);
                    y = Integer.parseInt(posId[0].split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("payeeaccount");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getPayeeAccount());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }

                if (vouFieldVO.getField().trim().equals("payeebankaccount")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    String[] posId = pos.split("\\|");
                    x = Integer.parseInt(posId[0].split(",")[0]);
                    y = Integer.parseInt(posId[0].split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("payeebankaccount");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getPayeeBankName());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);

                }


                if (vouFieldVO.getField().trim().equals("scaleamt")) {

                    VoucherDetailVO voucherDetailVO = new VoucherDetailVO();
                    voucherDetailVO.setVoVdSn(IdWorker.getOrderCode(busitype)); // 主键
                    voucherDetailVO.setVoDeSn(vo.getVoSn()); // 主表ID
                    voucherDetailVO.setOrderbillsn(vo.getOrderbillsn()); // 订单ID

                    Color color = Color.BLACK;
                    String cc = ImageUtils.Color2String(color);
                    String[] posId = pos.split("\\|");
                    x = Integer.parseInt(posId[0].split(",")[0]);
                    y = Integer.parseInt(posId[0].split(",")[1]);

                    voucherDetailVO.setAlpha(1); // 透明度
                    voucherDetailVO.setFontcolor(cc); // 延时
                    voucherDetailVO.setFontname("宋体");

                    voucherDetailVO.setFontsize(40);
                    voucherDetailVO.setHalign(vouFieldVO.getHalign()); // 方向
                    voucherDetailVO.setX(x);
                    voucherDetailVO.setY(y);
                    voucherDetailVO.setField("scaleamt");
                    voucherDetailVO.setFieldType("String");
                    voucherDetailVO.setFieldValue(sacle.getCollectFund());
                    voucherDetailVO.setMaxlength(vouFieldVO.getMaxlength());
                    voucherDetailVO.setIsnewline(vouFieldVO.getIsnewline());
                    listDe.add(voucherDetailVO);
                }
            }
        }
        return listDe;
    }
}
